package com.atguigu.jxc.service.impl;

import com.atguigu.jxc.dao.GoodsTypeDao;
import com.atguigu.jxc.entity.Goods;
import com.atguigu.jxc.entity.GoodsType;
import com.atguigu.jxc.service.GoodsTypeService;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

/**
 * @author lfh
 * @version 1.0
 * @date 2021/5/14 9:12
 */
@Service
public class GoodsTypeServiceImpl implements GoodsTypeService {

    @Autowired
    private GoodsTypeDao goodsTypeDao;

    @Override
    public String loadGoodsType() {
       return this.getAllGoodsType(-1).toString();
    }

    private JsonArray getAllGoodsType(Integer goodsPid) {
        JsonArray array = this.getGoodsTypePid(goodsPid);
        for (int i = 0; i < array.size(); i++) {
            JsonObject obj = (JsonObject) array.get(i);
            // 如果是叶子节点不在递归
            if (obj.get("state").getAsString().equals("open")){
                continue;
            }else {
                // 如果是根节点继续递归
                obj.add("children", this.getAllGoodsType(obj.get("id").getAsInt()));
            }
        }
        return array;
    }

    // 获取父Id
    private JsonArray getGoodsTypePid(Integer goodsPid) {
        JsonArray array = new JsonArray();
        // 查询父Id
        List<GoodsType> goodsTypeList = goodsTypeDao.getgetGoodsTypePid(goodsPid);
        // 遍历商品类别
        for (GoodsType goodsType : goodsTypeList) {
            JsonObject obj = new JsonObject();
            obj.addProperty("id", goodsType.getGoodsTypeId());
            obj.addProperty("text", goodsType.getGoodsTypeName());
            if (goodsType.getGoodsTypeState() == 1){
                // 根节点
                obj.addProperty("state", "closed");
            }else {
                // 子节点
                obj.addProperty("state", "open");
            }
            // 默认图标
            obj.addProperty("iconCls", "goods-type");

            JsonObject attributes = new JsonObject();
            // 扩展类别
            attributes.addProperty("state", goodsType.getGoodsTypeState());
            obj.add("attributes",attributes);
            array.add(obj);
        }
        return array;
    }


    @Override
    public void save(String goodsTypeName, Integer pId) {
        GoodsType goodsType = new GoodsType();
        goodsType.setGoodsTypeName(goodsTypeName);
        goodsType.setPId(pId);
        goodsType.setGoodsTypeState(0);
        goodsTypeDao.saveGoodsTypeName(goodsType);


    }

    @Override
    public void deleteById(Integer goodsTypeId) {
        goodsTypeDao.deleteById(goodsTypeId);
    }


}
